// 封装navigateTo 避免wx.navigateTo堆栈到十层不跳转问题
const MAX_VALUE = 10;
/**
 * 解除小程序页面10层限制
 * @param obj
 */
export function goPage(obj) {
	var pages = getCurrentPages(), // 页面栈
		len = pages.length,
		dlt = '',
		url = '/' + obj.url.replace(/^\//, ''); // 如果有，将第一个‘/’去掉，然后再补上（开发者习惯不同，有些人会给url加/，有些则忘了，兼容处理
	// 查找目标页在页面栈的位置
	for (var i = 0; i < len; i++) {
		if (pages[i].route == url) {
			dlt = i + 1; //目标页在栈中的位置
			break;
		}
	}
	// 保存数据
	if (!dlt) { //页面不在栈中
		if (len < MAX_VALUE) {
			// 保留当前页面，跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 uni.navigateBack 可以返回到原页面。小程序中页面栈最多十层
			uni.navigateTo({
				url
			});
		} else {
			// 关闭当前页面，跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
			uni.redirectTo({
				url
			});
		}
	} else {
		// 关闭当前页面，返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈，决定需要返回几层
		uni.navigateBack({
			delta: len - dlt
		});
	}
}
